package com.scholarship.modules.admin.service;

import com.github.pagehelper.PageInfo;
import com.scholarship.common.dto.ResultListDto;
import com.scholarship.modules.admin.dto.*;
import com.scholarship.modules.admin.entity.*;
import com.scholarship.modules.admin.exce.EmptyValueException;


import java.text.ParseException;
import java.util.List;
import java.util.Map;

/**
 * @Author Z.J.H
 * @create 2021/5/9 13:39
 */
public interface FeedbackListService {
    /**
     * 获取申请审核列表查询条件
     * @return
     * @throws Exception
     */
    Map<String, List<String>> getFeedbackQuery() throws Exception;

    /**
     * 查询所有审核信息
     * @return
     * @throws Exception
     */
    ResultListDto<FeedbackListDto> listAllFeedback(Integer pageNum, Integer pageSize) throws Exception;

    /**
     * 根据查询条件查询审核信息
     * @param feedbackQueryDto
     * @return
     * @throws Exception
     */
    ResultListDto<FeedbackListDto> listFeedbackByQuery(Integer pageNum, Integer pageSize, FeedbackQueryDto feedbackQueryDto) throws Exception;

    /**
     * 根据搜索查询审核信息
     * @param searchStr
     * @return
     * @throws Exception
     */
    ResultListDto<FeedbackListDto> listFeedbackBySearch(Integer pageNum,Integer pageSize,String searchStr) throws Exception;

    /**
     * 批量删除选中信息
     * @param userIdList   用户id列表
     * @throws Exception
     */
    void batchDeleteFeedbacks(String[] userIdList) throws Exception;

    /**
     * 获取奖学金类型列表
     * @return
     */
    List<RewardTypeDto> listAllRewardType() throws Exception;

    /**
     * 获根据奖学金类型id取奖项列表
     * @param typeId
     * @return
     */
    List<RewardTypeDetailDto> listRewardTypeDetailByTypeId(Integer typeId) throws Exception;

    /**
     * 通过奖项id查询字段列表
     * @param tableId
     * @return
     */
    List<TableInfoDto> listTableInfoByTableId(Integer tableId) throws Exception;

    /**
     * 通过奖项id和字段类型id查询下拉框列表
     * @param tableId
     * @param fieldId
     * @return
     */
    List<DropDownBox> listDropDownBoxByTableIdAndFieldId(Integer tableId, Integer fieldId) throws Exception;

    /**
     * 显示奖学金申请层级表（奖学金类型+奖项+字段+下拉框）
     * @param userId
     * @return
     * @throws Exception
     */
    List<RewardTypeDto> listRewardListAndInformation(String userId) throws Exception;

    /**
     * 显示奖学金申请层级表（奖学金类型+奖项+字段+下拉框）
     * @param userId
     * @return
     * @throws Exception
     */
    List<RewardTypeDto> listRewardListAndInformationNew(String userId) throws Exception;

    /**
     * 保存指定奖项信息
     * @param userId
     * @param rewardTypeDetailDto
     */
    void saveSelectedRewardTypeDetail(String userId,RewardTypeDetailDto rewardTypeDetailDto) throws ParseException, EmptyValueException;

    /**
     * 清空指定奖项信息
     * @param userId
     * @param tableId
     */
    void emptySelectedRewardTypeDetail(String userId,Integer tableId);

    /**
     * 获取申请详情
     * @param userId
     * @return
     */
    RewardFeedback getApplication(String userId);

    /**
     * 提交申请
     * @param userId
     */
    void submitApplication(String userId);
}
